<?php
namespace Think;
class Pinyin{
	private $d = array (
		array (
			"a",
			-20319
		),
		array (
			"ai",
			-20317
		),
		array (
			"an",
			-20304
		),
		array (
			"ang",
			-20295
		),
		array (
			"ao",
			-20292
		),
		array (
			"ba",
			-20283
		),
		array (
			"bai",
			-20265
		),
		array (
			"ban",
			-20257
		),
		array (
			"bang",
			-20242
		),
		array (
			"bao",
			-20230
		),
		array (
			"bei",
			-20051
		),
		array (
			"ben",
			-20036
		),
		array (
			"beng",
			-20032
		),
		array (
			"bi",
			-20026
		),
		array (
			"bian",
			-20002
		),
		array (
			"biao",
			-19990
		),
		array (
			"bie",
			-19986
		),
		array (
			"bin",
			-19982
		),
		array (
			"bing",
			-19976
		),
		array (
			"bo",
			-19805
		),
		array (
			"bu",
			-19784
		),
		array (
			"ca",
			-19775
		),
		array (
			"cai",
			-19774
		),
		array (
			"can",
			-19763
		),
		array (
			"cang",
			-19756
		),
		array (
			"cao",
			-19751
		),
		array (
			"ce",
			-19746
		),
		array (
			"ceng",
			-19741
		),
		array (
			"cha",
			-19739
		),
		array (
			"chai",
			-19728
		),
		array (
			"chan",
			-19725
		),
		array (
			"chang",
			-19715
		),
		array (
			"chao",
			-19540
		),
		array (
			"che",
			-19531
		),
		array (
			"chen",
			-19525
		),
		array (
			"cheng",
			-19515
		),
		array (
			"chi",
			-19500
		),
		array (
			"chong",
			-19484
		),
		array (
			"chou",
			-19479
		),
		array (
			"chu",
			-19467
		),
		array (
			"chuai",
			-19289
		),
		array (
			"chuan",
			-19288
		),
		array (
			"chuang",
			-19281
		),
		array (
			"chui",
			-19275
		),
		array (
			"chun",
			-19270
		),
		array (
			"chuo",
			-19263
		),
		array (
			"ci",
			-19261
		),
		array (
			"cong",
			-19249
		),
		array (
			"cou",
			-19243
		),
		array (
			"cu",
			-19242
		),
		array (
			"cuan",
			-19238
		),
		array (
			"cui",
			-19235
		),
		array (
			"cun",
			-19227
		),
		array (
			"cuo",
			-19224
		),
		array (
			"da",
			-19218
		),
		array (
			"dai",
			-19212
		),
		array (
			"dan",
			-19038
		),
		array (
			"dang",
			-19023
		),
		array (
			"dao",
			-19018
		),
		array (
			"de",
			-19006
		),
		array (
			"deng",
			-19003
		),
		array (
			"di",
			-18996
		),
		array (
			"dian",
			-18977
		),
		array (
			"diao",
			-18961
		),
		array (
			"die",
			-18952
		),
		array (
			"ding",
			-18783
		),
		array (
			"diu",
			-18774
		),
		array (
			"dong",
			-18773
		),
		array (
			"dou",
			-18763
		),
		array (
			"du",
			-18756
		),
		array (
			"duan",
			-18741
		),
		array (
			"dui",
			-18735
		),
		array (
			"dun",
			-18731
		),
		array (
			"duo",
			-18722
		),
		array (
			"e",
			-18710
		),
		array (
			"en",
			-18697
		),
		array (
			"er",
			-18696
		),
		array (
			"fa",
			-18526
		),
		array (
			"fan",
			-18518
		),
		array (
			"fang",
			-18501
		),
		array (
			"fei",
			-18490
		),
		array (
			"fen",
			-18478
		),
		array (
			"feng",
			-18463
		),
		array (
			"fo",
			-18448
		),
		array (
			"fou",
			-18447
		),
		array (
			"fu",
			-18446
		),
		array (
			"ga",
			-18239
		),
		array (
			"gai",
			-18237
		),
		array (
			"gan",
			-18231
		),
		array (
			"gang",
			-18220
		),
		array (
			"gao",
			-18211
		),
		array (
			"ge",
			-18201
		),
		array (
			"gei",
			-18184
		),
		array (
			"gen",
			-18183
		),
		array (
			"geng",
			-18181
		),
		array (
			"gong",
			-18012
		),
		array (
			"gou",
			-17997
		),
		array (
			"gu",
			-17988
		),
		array (
			"gua",
			-17970
		),
		array (
			"guai",
			-17964
		),
		array (
			"guan",
			-17961
		),
		array (
			"guang",
			-17950
		),
		array (
			"gui",
			-17947
		),
		array (
			"gun",
			-17931
		),
		array (
			"guo",
			-17928
		),
		array (
			"ha",
			-17922
		),
		array (
			"hai",
			-17759
		),
		array (
			"han",
			-17752
		),
		array (
			"hang",
			-17733
		),
		array (
			"hao",
			-17730
		),
		array (
			"he",
			-17721
		),
		array (
			"hei",
			-17703
		),
		array (
			"hen",
			-17701
		),
		array (
			"heng",
			-17697
		),
		array (
			"hong",
			-17692
		),
		array (
			"hou",
			-17683
		),
		array (
			"hu",
			-17676
		),
		array (
			"hua",
			-17496
		),
		array (
			"huai",
			-17487
		),
		array (
			"huan",
			-17482
		),
		array (
			"huang",
			-17468
		),
		array (
			"hui",
			-17454
		),
		array (
			"hun",
			-17433
		),
		array (
			"huo",
			-17427
		),
		array (
			"ji",
			-17417
		),
		array (
			"jia",
			-17202
		),
		array (
			"jian",
			-17185
		),
		array (
			"jiang",
			-16983
		),
		array (
			"jiao",
			-16970
		),
		array (
			"jie",
			-16942
		),
		array (
			"jin",
			-16915
		),
		array (
			"jing",
			-16733
		),
		array (
			"jiong",
			-16708
		),
		array (
			"jiu",
			-16706
		),
		array (
			"ju",
			-16689
		),
		array (
			"juan",
			-16664
		),
		array (
			"jue",
			-16657
		),
		array (
			"jun",
			-16647
		),
		array (
			"ka",
			-16474
		),
		array (
			"kai",
			-16470
		),
		array (
			"kan",
			-16465
		),
		array (
			"kang",
			-16459
		),
		array (
			"kao",
			-16452
		),
		array (
			"ke",
			-16448
		),
		array (
			"ken",
			-16433
		),
		array (
			"keng",
			-16429
		),
		array (
			"kong",
			-16427
		),
		array (
			"kou",
			-16423
		),
		array (
			"ku",
			-16419
		),
		array (
			"kua",
			-16412
		),
		array (
			"kuai",
			-16407
		),
		array (
			"kuan",
			-16403
		),
		array (
			"kuang",
			-16401
		),
		array (
			"kui",
			-16393
		),
		array (
			"kun",
			-16220
		),
		array (
			"kuo",
			-16216
		),
		array (
			"la",
			-16212
		),
		array (
			"lai",
			-16205
		),
		array (
			"lan",
			-16202
		),
		array (
			"lang",
			-16187
		),
		array (
			"lao",
			-16180
		),
		array (
			"le",
			-16171
		),
		array (
			"lei",
			-16169
		),
		array (
			"leng",
			-16158
		),
		array (
			"li",
			-16155
		),
		array (
			"lia",
			-15959
		),
		array (
			"lian",
			-15958
		),
		array (
			"liang",
			-15944
		),
		array (
			"liao",
			-15933
		),
		array (
			"lie",
			-15920
		),
		array (
			"lin",
			-15915
		),
		array (
			"ling",
			-15903
		),
		array (
			"liu",
			-15889
		),
		array (
			"long",
			-15878
		),
		array (
			"lou",
			-15707
		),
		array (
			"lu",
			-15701
		),
		array (
			"lv",
			-15681
		),
		array (
			"luan",
			-15667
		),
		array (
			"lue",
			-15661
		),
		array (
			"lun",
			-15659
		),
		array (
			"luo",
			-15652
		),
		array (
			"ma",
			-15640
		),
		array (
			"mai",
			-15631
		),
		array (
			"man",
			-15625
		),
		array (
			"mang",
			-15454
		),
		array (
			"mao",
			-15448
		),
		array (
			"me",
			-15436
		),
		array (
			"mei",
			-15435
		),
		array (
			"men",
			-15419
		),
		array (
			"meng",
			-15416
		),
		array (
			"mi",
			-15408
		),
		array (
			"mian",
			-15394
		),
		array (
			"miao",
			-15385
		),
		array (
			"mie",
			-15377
		),
		array (
			"min",
			-15375
		),
		array (
			"ming",
			-15369
		),
		array (
			"miu",
			-15363
		),
		array (
			"mo",
			-15362
		),
		array (
			"mou",
			-15183
		),
		array (
			"mu",
			-15180
		),
		array (
			"na",
			-15165
		),
		array (
			"nai",
			-15158
		),
		array (
			"nan",
			-15153
		),
		array (
			"nang",
			-15150
		),
		array (
			"nao",
			-15149
		),
		array (
			"ne",
			-15144
		),
		array (
			"nei",
			-15143
		),
		array (
			"nen",
			-15141
		),
		array (
			"neng",
			-15140
		),
		array (
			"ni",
			-15139
		),
		array (
			"nian",
			-15128
		),
		array (
			"niang",
			-15121
		),
		array (
			"niao",
			-15119
		),
		array (
			"nie",
			-15117
		),
		array (
			"nin",
			-15110
		),
		array (
			"ning",
			-15109
		),
		array (
			"niu",
			-14941
		),
		array (
			"nong",
			-14937
		),
		array (
			"nu",
			-14933
		),
		array (
			"nv",
			-14930
		),
		array (
			"nuan",
			-14929
		),
		array (
			"nue",
			-14928
		),
		array (
			"nuo",
			-14926
		),
		array (
			"o",
			-14922
		),
		array (
			"ou",
			-14921
		),
		array (
			"pa",
			-14914
		),
		array (
			"pai",
			-14908
		),
		array (
			"pan",
			-14902
		),
		array (
			"pang",
			-14894
		),
		array (
			"pao",
			-14889
		),
		array (
			"pei",
			-14882
		),
		array (
			"pen",
			-14873
		),
		array (
			"peng",
			-14871
		),
		array (
			"pi",
			-14857
		),
		array (
			"pian",
			-14678
		),
		array (
			"piao",
			-14674
		),
		array (
			"pie",
			-14670
		),
		array (
			"pin",
			-14668
		),
		array (
			"ping",
			-14663
		),
		array (
			"po",
			-14654
		),
		array (
			"pu",
			-14645
		),
		array (
			"qi",
			-14630
		),
		array (
			"qia",
			-14594
		),
		array (
			"qian",
			-14429
		),
		array (
			"qiang",
			-14407
		),
		array (
			"qiao",
			-14399
		),
		array (
			"qie",
			-14384
		),
		array (
			"qin",
			-14379
		),
		array (
			"qing",
			-14368
		),
		array (
			"qiong",
			-14355
		),
		array (
			"qiu",
			-14353
		),
		array (
			"qu",
			-14345
		),
		array (
			"quan",
			-14170
		),
		array (
			"que",
			-14159
		),
		array (
			"qun",
			-14151
		),
		array (
			"ran",
			-14149
		),
		array (
			"rang",
			-14145
		),
		array (
			"rao",
			-14140
		),
		array (
			"re",
			-14137
		),
		array (
			"ren",
			-14135
		),
		array (
			"reng",
			-14125
		),
		array (
			"ri",
			-14123
		),
		array (
			"rong",
			-14122
		),
		array (
			"rou",
			-14112
		),
		array (
			"ru",
			-14109
		),
		array (
			"ruan",
			-14099
		),
		array (
			"rui",
			-14097
		),
		array (
			"run",
			-14094
		),
		array (
			"ruo",
			-14092
		),
		array (
			"sa",
			-14090
		),
		array (
			"sai",
			-14087
		),
		array (
			"san",
			-14083
		),
		array (
			"sang",
			-13917
		),
		array (
			"sao",
			-13914
		),
		array (
			"se",
			-13910
		),
		array (
			"sen",
			-13907
		),
		array (
			"seng",
			-13906
		),
		array (
			"sha",
			-13905
		),
		array (
			"shai",
			-13896
		),
		array (
			"shan",
			-13894
		),
		array (
			"shang",
			-13878
		),
		array (
			"shao",
			-13870
		),
		array (
			"she",
			-13859
		),
		array (
			"shen",
			-13847
		),
		array (
			"sheng",
			-13831
		),
		array (
			"shi",
			-13658
		),
		array (
			"shou",
			-13611
		),
		array (
			"shu",
			-13601
		),
		array (
			"shua",
			-13406
		),
		array (
			"shuai",
			-13404
		),
		array (
			"shuan",
			-13400
		),
		array (
			"shuang",
			-13398
		),
		array (
			"shui",
			-13395
		),
		array (
			"shun",
			-13391
		),
		array (
			"shuo",
			-13387
		),
		array (
			"si",
			-13383
		),
		array (
			"song",
			-13367
		),
		array (
			"sou",
			-13359
		),
		array (
			"su",
			-13356
		),
		array (
			"suan",
			-13343
		),
		array (
			"sui",
			-13340
		),
		array (
			"sun",
			-13329
		),
		array (
			"suo",
			-13326
		),
		array (
			"ta",
			-13318
		),
		array (
			"tai",
			-13147
		),
		array (
			"tan",
			-13138
		),
		array (
			"tang",
			-13120
		),
		array (
			"tao",
			-13107
		),
		array (
			"te",
			-13096
		),
		array (
			"teng",
			-13095
		),
		array (
			"ti",
			-13091
		),
		array (
			"tian",
			-13076
		),
		array (
			"tiao",
			-13068
		),
		array (
			"tie",
			-13063
		),
		array (
			"ting",
			-13060
		),
		array (
			"tong",
			-12888
		),
		array (
			"tou",
			-12875
		),
		array (
			"tu",
			-12871
		),
		array (
			"tuan",
			-12860
		),
		array (
			"tui",
			-12858
		),
		array (
			"tun",
			-12852
		),
		array (
			"tuo",
			-12849
		),
		array (
			"wa",
			-12838
		),
		array (
			"wai",
			-12831
		),
		array (
			"wan",
			-12829
		),
		array (
			"wang",
			-12812
		),
		array (
			"wei",
			-12802
		),
		array (
			"wen",
			-12607
		),
		array (
			"weng",
			-12597
		),
		array (
			"wo",
			-12594
		),
		array (
			"wu",
			-12585
		),
		array (
			"xi",
			-12556
		),
		array (
			"xia",
			-12359
		),
		array (
			"xian",
			-12346
		),
		array (
			"xiang",
			-12320
		),
		array (
			"xiao",
			-12300
		),
		array (
			"xie",
			-12120
		),
		array (
			"xin",
			-12099
		),
		array (
			"xing",
			-12089
		),
		array (
			"xiong",
			-12074
		),
		array (
			"xiu",
			-12067
		),
		array (
			"xu",
			-12058
		),
		array (
			"xuan",
			-12039
		),
		array (
			"xue",
			-11867
		),
		array (
			"xun",
			-11861
		),
		array (
			"ya",
			-11847
		),
		array (
			"yan",
			-11831
		),
		array (
			"yang",
			-11798
		),
		array (
			"yao",
			-11781
		),
		array (
			"ye",
			-11604
		),
		array (
			"yi",
			-11589
		),
		array (
			"yin",
			-11536
		),
		array (
			"ying",
			-11358
		),
		array (
			"yo",
			-11340
		),
		array (
			"yong",
			-11339
		),
		array (
			"you",
			-11324
		),
		array (
			"yu",
			-11303
		),
		array (
			"yuan",
			-11097
		),
		array (
			"yue",
			-11077
		),
		array (
			"yun",
			-11067
		),
		array (
			"za",
			-11055
		),
		array (
			"zai",
			-11052
		),
		array (
			"zan",
			-11045
		),
		array (
			"zang",
			-11041
		),
		array (
			"zao",
			-11038
		),
		array (
			"ze",
			-11024
		),
		array (
			"zei",
			-11020
		),
		array (
			"zen",
			-11019
		),
		array (
			"zeng",
			-11018
		),
		array (
			"zha",
			-11014
		),
		array (
			"zhai",
			-10838
		),
		array (
			"zhan",
			-10832
		),
		array (
			"zhang",
			-10815
		),
		array (
			"zhao",
			-10800
		),
		array (
			"zhe",
			-10790
		),
		array (
			"zhen",
			-10780
		),
		array (
			"zheng",
			-10764
		),
		array (
			"zhi",
			-10587
		),
		array (
			"zhong",
			-10544
		),
		array (
			"zhou",
			-10533
		),
		array (
			"zhu",
			-10519
		),
		array (
			"zhua",
			-10331
		),
		array (
			"zhuai",
			-10329
		),
		array (
			"zhuan",
			-10328
		),
		array (
			"zhuang",
			-10322
		),
		array (
			"zhui",
			-10315
		),
		array (
			"zhun",
			-10309
		),
		array (
			"zhuo",
			-10307
		),
		array (
			"zi",
			-10296
		),
		array (
			"zong",
			-10281
		),
		array (
			"zou",
			-10274
		),
		array (
			"zu",
			-10270
		),
		array (
			"zuan",
			-10262
		),
		array (
			"zui",
			-10260
		),
		array (
			"zun",
			-10256
		),
		array (
			"zuo",
			-10254
		)
	);

	function g($num) {
		if ($num > 0 && $num < 160) {
			return chr($num);
		}
		elseif ($num < -20319 || $num > -10247) {
			return "";
		} else {
			for ($i = count($this->d) - 1; $i >= 0; $i--) {
				if ($this->d[$i][1] <= $num)
					break;
			}
			return $this->d[$i][0];
		}
	}

	function c($str) {
		$ret = "";
		for ($i = 0; $i < strlen($str); $i++) {
			$p = ord(substr($str, $i, 1));

			if ($p > 160) {

				$q = ord(substr($str, ++ $i, 1));

				$p = $p * 256 + $q -65536;

			}
			$ret .= $this->g($p);

		}
		$ret = substr($ret, 0, 1);
		return $ret;
	}

	function f($str) {
		$ret = "";
		for ($i = 0; $i < strlen($str); $i++) {
			$p = ord(substr($str, $i, 1));
			if ($p > 160) {
				$q = ord(substr($str, ++ $i, 1));
				$p = $p * 256 + $q -65536;
			}
			$ret .= $this->g($p);
		}
		return $ret;
	}

	/*
	PHP截取UTF-8编码的中英文字符串
	*/
	function utf8_substr($str, $from, $len) {
		return preg_replace('#^(?:[\x00-\x7F]|[\xC0-\xFF][\x80-\xBF]+){0,' . $from . '}' . '((?:[\x00-\x7F]|[\xC0-\xFF][\x80-\xBF]+){0,' . $len . '}).*#s', '$1', $str);
	}

	/*
	将中英文字符串转换成拼音
	*/
	function strtopin($chinese,$type=0) {
		$i = 0;
		$pinyin = "";
		$arr = array ();
		while (1) {
			$str = $this->utf8_substr($chinese, $i, 1);
			if (!empty ($str)) {
				$arr[$i] = $str;
				$str = iconv("utf-8", "gb2312", $str);
				if($type==1){ //转换成首字母
					$pinyin .= $this->c($str);
				}else{     //转换成全拼
					$pinyin .= $this->f($str)." ";
				}
				$i = $i +1;
			} else
				break;
		}
		return $pinyin;
	}
}


?>